package utilidades;


public class Vector {
	private int coordenadaX,coordenadaY;
	
	public Vector(){
		coordenadaX = 0;
		coordenadaY = 0;
	}
	public Vector(int x,int y){
		coordenadaX = x;
		coordenadaY = y;
	}

	public Vector(Vector otroPunto){
		coordenadaX = otroPunto.coordenadaX;
		coordenadaY = otroPunto.coordenadaY;
	}

	public Vector sumarleElVector(Vector otroPunto){
		return new Vector(coordenadaX+otroPunto.coordenadaX,coordenadaY+otroPunto.coordenadaY);
	}

	public Vector restarleElVector(Vector otroPunto){
		return new Vector(coordenadaX-otroPunto.coordenadaX,coordenadaY-otroPunto.coordenadaY);
	}	

	public int distancia(Vector otroPunto){
		return (int) Math.sqrt(Math.pow(coordenadaX+otroPunto.coordenadaX,2)+Math.pow(coordenadaY+otroPunto.coordenadaY,2));
	}
	
	public Vector multiplicarPorEscalar(int escalar){
		return new Vector(coordenadaX*escalar,coordenadaY*escalar);
	}

	public int obtenerCoordenadaX(){
		return coordenadaX;
	}

	public int obtenerCoordenadaY(){
		return coordenadaY;
	}

	public Vector obtenerVectorContrario(){
		return this.multiplicarPorEscalar(-1);
	}
	
	public boolean esIgualA (Vector unVector){
		boolean igualesEnX = (coordenadaX == unVector.obtenerCoordenadaX());
		boolean igualesEnY = (coordenadaY == unVector.obtenerCoordenadaY());
		return (igualesEnX && igualesEnY);
	}

	public boolean alineadoCon (Vector unVector){
		boolean igualesEnX = (coordenadaX == unVector.obtenerCoordenadaX());
		boolean igualesEnY = (coordenadaY == unVector.obtenerCoordenadaY());
		return (igualesEnX || igualesEnY);
	}	
	
	public boolean esMayorA(Vector unVector){
		if(!alineadoCon(unVector)){
			return false;
		}
		boolean mayorEnX = coordenadaX > unVector.obtenerCoordenadaX();
		boolean mayorEnY = coordenadaY > unVector.obtenerCoordenadaY();
		return (mayorEnX || mayorEnY);
	}

	public String convertirATexto() {
		String direccionEnTexto = "";
		if (this.esIgualA(Constantes.ABAJO)){
			direccionEnTexto = "abajo";
		}
		if (this.esIgualA(Constantes.ARRIBA)){
			direccionEnTexto = "arriba";
		}
		if (this.esIgualA(Constantes.DERECHA)){
			direccionEnTexto = "derecha";
		}
		if (this.esIgualA(Constantes.IZQUIERDA)){
			direccionEnTexto = "izquierda";
		}
		return direccionEnTexto;
	}
}
